// od_children_queue 小朋友高矮排列
// https://blog.csdn.net/weixin_47243236/article/details/122629038 JOEL-T99 于
// 2022-01-21 20:40:40 发布
// 现在有一队小朋友，他们高矮不同，，我们以正整数数组表示这一队小朋友的身高，如数组{5,3,1,2,3}。
// 我们现在希望小朋友排队，以高矮高矮顺序排列，每一个“高”位置的小朋友要比相邻的位置高或者相等；
// 每一个“矮”位置的小朋友要比相邻的位置矮或者相等；要求小朋友们移动的距离和最小，第一个从“高”位开始排，输出最小移动距离即可。
// 移动距离的定义如下所示：第二位小朋友移到第三位小朋友后面，移动距离为1，若移动到第四位小朋友后面，移动距离为2。
// 输入描述：
// 排序前的小朋友，以英文空格的正整数：4 3 5 7 8
// 小朋友<100个
// 输出描述：
// 排序后的小朋友，以英文空格分割的正整数：4 3 7 5 8
// 输出结果为最小移动距离，只有5和7交换了位置，移动距离都是1
// 输入：4 1 3 5 2
// 输出：4 1 5 2 3
// 输入：1 1 1 1 1
// 输出：1 1 1 1 1
// 相邻位置可以相等
// 输入：xxx
// 输出：[]
// 出现非法参数情况，返回空数组
def main(args
         : Array[String])
    : Unit = {
        val scan = new Scanner(System.in)
        // 获取输入
        var line : Array[Int] =
            null try {line = scan.nextLine().split(" ").map(_.toInt)} catch {
              case e : Exception = > println("[]") return
            } finally{scan.close()}
            // 实现排列
            for (i < -0 to line.length - 2){
              var tmp : Int =
                  0 if ((i % 2 == 0 & line(i) < line(i + 1))){
                      tmp = line(i) line(i) = line(i + 1) line(i + 1) =
                          tmp} if ((i % 2 == 1 & line(i) > line(i + 1))){
                      tmp = line(i) line(i) = line(i + 1) line(i + 1) = tmp}
            }
            // 输出结果
            line.foreach (elem = > print(s "${elem} "))
      }
